hanlp汉语言包

一、简介

在搜索或其它应用领域,我们通常需要对数据进行分词。在汉语言分词处理中,我们可以使用hanlp,它是开源的汉语言处理包,可用于分词、语言处理等操作。

二、组成

hanlp由三部分组成,分别是词库、驱动器(jar包)、hanlp配置。

2.1 词库

词库包含词典和模型,词典(位于data/dictionary目录下)用于词法分析,模型(位于data/model目录下)用于语法分析。对应的数据包有如下几类:

data.full.zip,完整的词库(包括词典和模型);

data.standary.zip,完整的词典,不包含模型;

data.mini.zip,小体积的词典,不包含模型;

下载地址是http://115.159.41.123/click.php?id=3

详情在地址https://github.com/hankcs/HanLP/releases/tag/v1.3.4中

2.2 驱动器(jar包)

hanlp提供了轻便的jar包,内置了基本的词典,maven依赖如下:

<dependency>

<groupId>com.hankcs</groupId>

<artifactId>hanlp</artifactId>

<version>portable-1.2.8</version>

</dependency>

若在lucene或solr中使用,单独安装词典,则添加对应的依赖包,如下:

<dependency>

<groupId>com.hankcs.nlp</groupId>

<artifactId>hanlp-solr-plugin</artifactId>

<version>1.1.2</version>

</dependency>

<dependency>

<groupId>com.hankcs.nlp</groupId>

<artifactId>hanlp-solr-plugin</artifactId>

<version>1.1.2</version>

</dependency>

2.3 配置文件hanlp.properties

主要是配置词库的地址root=D:/HanLP/,配置文件内容如下:

#本配置文件中的路径的根目录,根目录+其他路径=绝对路径

#Windows用户请注意,路径分隔符统一使用/

root=D:/HanLP/

#核心词典路径

CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt

#2元语法词典路径

BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.txt

#停用词词典路径

CoreStopWordDictionaryPath=data/dictionary/stopwords.txt

#同义词词典路径

CoreSynonymDictionaryDictionaryPath=data/dictionary/synonym/CoreSynonym.txt

#人名词典路径

PersonDictionaryPath=data/dictionary/person/nr.txt

#人名词典转移矩阵路径

PersonDictionaryTrPath=data/dictionary/person/nr.tr.txt

#繁简词典路径

TraditionalChineseDictionaryPath=data/dictionary/tc/TraditionalChinese.txt

#自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用文件名 词性形式则表示这个词典的词性默认是该词性。优先级递减。

#另外data/dictionary/custom/CustomDictionary.txt是个高质量的词库,请不要删除

CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 现代汉语补充词库.txt; 全国地名大全.txt ns; 人名词典.txt; 机构名词典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf

#CRF分词模型路径

CRFSegmentModelPath=data/model/segment/CRFSegmentModel.txt

#HMM分词模型

HMMSegmentModelPath=data/model/segment/HMMSegmentModel.bin

#分词结果是否展示词性

ShowTermNature=true

三、直接使用hanlp的代码实例

3.1 添加maven依赖

<dependency>

<groupId>com.hankcs</groupId>

<artifactId>hanlp</artifactId>

<version>portable-1.2.8</version>

</dependency>

3.2 代码

public class HanlpMain {

public static void main(String[] args) {

String text = "比你聪明的人,请不要让他还比你努力";

String traditionText= "比妳聰明的人,請不要讓他還比妳努力";

System.out.println(HanLP.segment(text)); //分词

System.out.println(HanLP.extractKeyword(text,2)); //提取关键字,同时指定提取的个数

System.out.println(HanLP.extractPhrase(text,2)); //提取短语,,同时指定提取的个数

System.out.println(HanLP.extractSummary(text,2)); //提取摘要,同时指定提取的个数

System.out.println(HanLP.getSummary(text,10)); //提取短语,同时指定摘要的最大长度

System.out.println(HanLP.convertToTraditionalChinese(text)); //简体字转为繁体字

System.out.println(HanLP.convertToSimplifiedChinese(traditionText)); //繁体字转为简体字

System.out.println(HanLP.convertToPinyinString(text," ",false)); //转为拼音

}

}

输出:

[比/p, 你/r, 聪明/a, 的/uj, 人/n, ,/w, 请/v, 不/d, 要/v, 让/v, 他/r, 还/d, 比/p, 你/r, 努力/ad]

[聪明, 努力]

[]

[请不要让他还比你努力]

请不要让他还比你努力。

比妳聰明的人,請不要讓他還比妳努力

比你聪明的人,请不要让他还比你努力

Disconnected from the target VM, address: '127.0.0.1:57424', transport: 'socket'

bi ni cong ming de ren qing bu yao rang ta hai bi ni nu li

四、lucene中hanlp使用实例

4.1 添加maven依赖

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-core</artifactId>

<version>${lucene.version}</version>

</dependency>

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-queryparser</artifactId>

<version>${lucene.version}</version>

</dependency>

<!-- 分词器 -->

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-analyzers-smartcn</artifactId>

<version>${lucene.version}</version>

</dependency>

<dependency>

<groupId>org.apache.lucene</groupId>

<artifactId>lucene-analyzers-common</artifactId>

<version>${lucene.version}</version>

</dependency>

<dependency>

<groupId>com.hankcs.nlp</groupId>

<artifactId>hanlp-lucene-plugin</artifactId>

<version>1.1.2</version>

</dependency>

4.2 配置文件hanlp.properties

将配置文件hanlp.properties放到classpath目录下(resources目录下即可),配置文件内容如下

#本配置文件中的路径的根目录,根目录+其他路径=绝对路径

#Windows用户请注意,路径分隔符统一使用/

root=D:/HanLP/

#核心词典路径

CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt

#2元语法词典路径

BiGramDictionaryPath=data/dictionary/CoreNatureDictionary.ngram.txt

#停用词词典路径

CoreStopWordDictionaryPath=data/dictionary/stopwords.txt

#同义词词典路径

CoreSynonymDictionaryDictionaryPath=data/dictionary/synonym/CoreSynonym.txt

#人名词典路径

PersonDictionaryPath=data/dictionary/person/nr.txt

#人名词典转移矩阵路径

PersonDictionaryTrPath=data/dictionary/person/nr.tr.txt

#繁简词典路径

TraditionalChineseDictionaryPath=data/dictionary/tc/TraditionalChinese.txt

#自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用文件名 词性形式则表示这个词典的词性默认是该词性。优先级递减。

#另外data/dictionary/custom/CustomDictionary.txt是个高质量的词库,请不要删除

CustomDictionaryPath=data/dictionary/custom/CustomDictionary.txt; 现代汉语补充词库.txt; 全国地名大全.txt ns; 人名词典.txt; 机构名词典.txt; 上海地名.txt ns;data/dictionary/person/nrf.txt nrf

#CRF分词模型路径

CRFSegmentModelPath=data/model/segment/CRFSegmentModel.txt

#HMM分词模型

HMMSegmentModelPath=data/model/segment/HMMSegmentModel.bin

#分词结果是否展示词性

ShowTermNature=true

4.3 示例

public class LuceneHanlpMain {

public static void main(String[] args) throws Exception {

String text = "少年强则中国强";

////////////////标准分词器(长词不做切分的分词器)//////////////////////////////

Analyzer analyzer = new HanLPAnalyzer();

TokenStream ts = analyzer.tokenStream("field",text);

ts.reset();

while(ts.incrementToken()){

CharTermAttribute attribute = ts.getAttribute(CharTermAttribute.class); //The term text of a Token.

OffsetAttribute offsetAttribute =ts.getAttribute(OffsetAttribute.class); //偏移量

PositionIncrementAttribute positionIncrementAttribute = ts.getAttribute(PositionIncrementAttribute.class); //距离

System.out.println(attribute+" "

+offsetAttribute.startOffset()+" "+offsetAttribute.endOffset()+" "

+positionIncrementAttribute.getPositionIncrement());

}

ts.close();

System.out.println();

/////////////////////////////////索引分词器(长词全切分的分词器)/////////////////////////////

Analyzer indexAnalyzer = new HanLPIndexAnalyzer();

TokenStream indexTs = indexAnalyzer.tokenStream("field",text);

indexTs.reset();

while(indexTs.incrementToken()){

CharTermAttribute attribute = indexTs.getAttribute(CharTermAttribute.class); //The term text of a Token.

OffsetAttribute offsetAttribute =indexTs.getAttribute(OffsetAttribute.class); //偏移量

PositionIncrementAttribute positionIncrementAttribute = indexTs.getAttribute(PositionIncrementAttribute.class); //距离

System.out.println(attribute+" "

+offsetAttribute.startOffset()+" "+offsetAttribute.endOffset()+" "

+positionIncrementAttribute.getPositionIncrement());

}

indexTs.close();

System.out.println();

/////////////////////////////通过query查看分词结果//////////////////////////////

QueryParser queryParser = new QueryParser("txt",analyzer);

Query query = queryParser.parse(text);

System.out.println(query.toString("txt"));

queryParser = new QueryParser("txt",indexAnalyzer);

query = queryParser.parse(text);

System.out.println(query.toString("txt"));

}

}

结果输出:

少年强 0 3 1

则 3 4 1

中国 4 6 1

强 6 7 1

少年强 0 3 1

少年 0 2 1

则 3 4 1

中国 4 6 1

强 6 7 1

少年强 则 中国 强

少年强 少年 则 中国 强

免责声明:本文作者:“pandastar”,版权归作者所有,观点仅代表作者本人。本站仅提供信息存储分享服务,不拥有所有权。信息贵在分享,如有侵权请联系ynstorm@foxmail.com,我们将在24小时内对侵权内容进行删除。
(51)
用TokenStream做一套宏不就行了
上一篇 2024年01月07日
elle包包(想送一个包包给自己喜欢已久
下一篇 2024年01月07日

相关推荐

  • 电脑疯子(发生过哪些意想不到的事)

    我跟我媳妇儿刚认识的时候,我丈母娘发现了我的存在,那天本来很正常的聊天,我媳妇儿就约我上街去逛街,结果我也是傻乎乎的就去了。...

    2023年11月03日
  • 在线火星文(什么火星文)

    火星文意指地球人看不懂的文字,由符号、繁体字、日文、韩文、冷僻字或汉字拆分后的部分等非正规化文字符号组合而成。随着互联网的普及,年轻网民为求彰显个性,开始大量使用同音字、音近字、特殊符号来表音的文字。...

    2023年11月20日
  • 一键恢复系统(电脑恢复系统教程怎么做一键恢复系统教程)

    在Windows10系统里,可以通过系统恢复选项来一键恢复电脑。具体操作是:打开“设置”窗口,点击“更新和安全”选项,选择“恢复”,然后找到“重置此电脑”选项并选择“开始”。...

    2023年11月20日
  • nuk安抚奶嘴(1岁多的宝宝奶瓶排行榜)

    品牌介绍:NUK品牌创建于1947年,在世界奶瓶品牌排行榜10强中是一家以经营接近母乳喂养自动进气仿真奶嘴产品而闻名于全球的品牌,成立以来公司在产品的生产上一直秉承着质量为先的原则,如今旗下的奶瓶、奶嘴、护理用品等在全球都享有着极高的声誉和销...

    2023年11月20日
  • 手机快播怎么用(手机快播雷达里面的电影播放不了)

    快播申请一个账号,手机快播搜的电影把它移进云寄存,然后就可以在电脑快播上登进那个账号在云寄存中就有你那个电影,但要重新缓冲才可以看...

    2023年11月23日
  • 如何删除系统启动项(microsoft的启动项)

    Microsoft的启动项是指在Windows操作系统启动时自动运行的程序或服务。这些启动项可以是Microsoft自己的程序,也可以是第三方程序。以下是一些常见的Microsoft启动项:...

    2023年11月30日
  • 盐城网络推广(江苏耀宁新能源有限公司怎么样)

    江苏耀宁新能源有限公司成立于2021-07-06,法定代表人为郑鑫,注册资本为12060.98万元人民币,统一社会信用代码为91330201MA2J7YR6XP,企业地址位于建湖县上冈产业园园区大道66号,所属行业为科技推广和应用服务业。...

    2023年12月03日
  • 美国吸引力何在?超82万国人移民美国背后的真相

    美国一直以来都是世界上超受欢迎的移民目的地之一,每年有数百万人移民美国寻求新生活。据统计,超过82万国人选择移民美国,这个令人印象深刻的数字背后,是美国作为全球移民优选的魅力所在。究竟是什么让人们如此向往美国?本文将在就业、教育、医疗、社会福...

    2023年12月29日
  • 5.25心理健康日,有位飒飒的小姐姐想教你一招

    【5.25心理健康日,有位飒飒的小姐姐想教你一招】今天(5月25日)是心理健康日,我爱我的谐音。这一天,倡导学生关爱自我、了解自我、接纳自我,关注自己的心理健康和心灵成长,提高自身心理素质,进而爱别人,爱社会。如何才能拥有阳光心理?以下三招不...

    2024年02月06日
  • 壁挂炉报价(羽顺壁挂炉最新价格)

    以一台20KW的羽顺壁挂炉为例,用在90平方面积的房子里,采暖地暖散热,需要30分钟就能将地暖水烧热,2个小时家里就能热起来。天然气的价格大多在2元左右,90平方面积一天大概需要6方-8方气,一个月500元就够了。如果使用得当,还能更省,比如...

    2024年03月23日
返回顶部